package edu.ustb.aur.assetpackage;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;

/**
 * @author ShiZhe 资产实体类
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName(value = "asset", autoResultMap = true)
public class Asset {

    /**
     * 资产链上编号,唯一索引
     */
    @TableId
    private String assetId;

    /**
     * 资产名称,普通索引
     */
    private String assetName;

    /**
     * 资产类型 TODO 稍后设定资产枚举类，将编码与具体的资产类型对应 对应资产类别编码，具体类别为9位，2+7 0-全部分类 1-个人 personal，11-合法收入 2-集体
     * collective，23-固定资产，24-无形资产，231020101-工业生产用房 3-国家 state，31-矿藏
     * 货币资产：110000000
     */
    private Long assetType;

    /**
     * 资产价值
     */
    private Double assetValue;

    /**
     * 具体描述
     */
    private String assetDescription;

    /**
     * 资产期限 一个时间点，在判断时，将合约时间与这个时间点比较
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    private Date assetTerm;

    /**
     * 操作规则
     */
    private String assetMold;

    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;

    /**
     * 资产锁，防止多线程死锁。0表示不可访问，1表示可访问
     */
    private Integer assetLock;

}